{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Exercise 2.5 (Page 56)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "709.5275096780147\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "def m(n):\n",
    "    return n + 1\n",
    "\n",
    "def delta(N, epsilon):\n",
    "    return 4 * m(2 * N) / (np.exp(N * (epsilon ** 2) / 8))\n",
    "\n",
    "print(delta(100, 0.1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Problem 2.1 (Page 69) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "839.9410155759853\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "delta = 0.03\n",
    "def f(M, epsilon):\n",
    "    return np.log(2 * M / delta)/(2 * epsilon ** 2)\n",
    "\n",
    "#(a)\n",
    "print(f(1, 0.05))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1760.9750527736032\n"
     ]
    }
   ],
   "source": [
    "#(b)\n",
    "print(f(100, 0.05))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2682.0090899712213\n"
     ]
    }
   ],
   "source": [
    "#(c)\n",
    "print(f(10000, 0.05))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Problem 2.3 (Page 69) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#(b)\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.scatter([1, 2], [0, 0])\n",
    "plt.scatter([0, 3, 4], [0, 0, 0])\n",
    "plt.plot([0.5, 0.5], [-1, 1], color='red')\n",
    "plt.plot([2.5, 2.5], [-1, 1], color='red')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter([1, 2], [0, 0])\n",
    "plt.scatter([3, 4], [0, 0])\n",
    "plt.plot([0.5, 0.5], [-1, 1], color='red')\n",
    "plt.plot([2.5, 2.5], [-1, 1], color='red')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Problem 2.7 (Page 70)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np \n",
    "\n",
    "def f1(N, d):\n",
    "    return (N ** d) + 1\n",
    "\n",
    "def f2(N, d):\n",
    "    return (np.exp(1) * N / d) ** d\n",
    "\n",
    "def draw(d):\n",
    "    n = range(1,50)\n",
    "    m1 = [f1(i, d) for i in n]\n",
    "    m2 = [f2(i, d) for i in n]\n",
    "    \n",
    "    plt.plot(n, m1, label='f1')\n",
    "    plt.plot(n, m2, label='f2')\n",
    "    plt.legend()\n",
    "    plt.title('dvc='+str(d))\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#d=2\n",
    "draw(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#d=3\n",
    "draw(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Problem 2.9 (Page 70)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from scipy.special import comb\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def m(N, d):\n",
    "    result = 0\n",
    "    k = min(d, N-1)\n",
    "    for i in range(k + 1):\n",
    "        result += comb(N-1, i)\n",
    "    return 2 * result\n",
    "\n",
    "x = range(1,41)\n",
    "d = 10\n",
    "y = [m(i, d) / (2 ** i) for i in x]\n",
    "\n",
    "plt.plot(x,y)\n",
    "plt.xlabel('N')\n",
    "plt.ylabel('mH(N)/2**N')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.0, 0.6761970520019531, 0.0016889239559532143]\n"
     ]
    }
   ],
   "source": [
    "print([m(i, d) / (2 ** i) for i in [10, 20, 40]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Problem 2.11 (Page 70)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "delta = 0.1\n",
    "\n",
    "def f(N, delta):\n",
    "    return np.sqrt(8 / N * np.log(4 * (2 * N + 1) /delta))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8481596247015304\n"
     ]
    }
   ],
   "source": [
    "print(f(100, delta))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.10427815497178729\n"
     ]
    }
   ],
   "source": [
    "print(f(10000, delta))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Problem 2.12 (Page 71)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "452957\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "delta = 0.05\n",
    "dvc = 10\n",
    "\n",
    "def f(N):\n",
    "    return (8 / N * np.log(4 * ((2 * N) ** dvc + 1) / delta)) ** 0.5 - 0.05\n",
    "\n",
    "n = 1\n",
    "while(True):\n",
    "    if(f(n) <= 0):\n",
    "        break\n",
    "    else:\n",
    "        n += 1\n",
    "\n",
    "print(n)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#作图\n",
    "x = range(1, 1000)\n",
    "y = [f(i) for i in x]\n",
    "\n",
    "plt.plot(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Problem 2.15 (Page 71)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "x = range(-10, 10)\n",
    "y = [-i for i in x]\n",
    "up = [10] * len(x)\n",
    "\n",
    "plt.xlabel('x')\n",
    "plt.ylabel('y')\n",
    "plt.plot(x, y)\n",
    "\n",
    "plt.fill_between(x, y, up)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Problem 2.20 (Page 73)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from scipy.special import comb\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus']=False #用来正常显示负号\n",
    "\n",
    "dvc = 50\n",
    "delta = 0.05\n",
    "\n",
    "#计算m(N)\n",
    "def m(n):\n",
    "    k = min(dvc, n)\n",
    "    s = 0\n",
    "    for i in range(k+1):\n",
    "        s += comb(n, k)\n",
    "    return s\n",
    "\n",
    "#Original VC-bound\n",
    "def f1(n):\n",
    "    result = (8 / n) * np.log(4 * m(2 * n) / delta)\n",
    "    result = result ** 0.5\n",
    "    return result\n",
    "\n",
    "#Rademacher Penalty Bound\n",
    "def f2(n):\n",
    "    k1 = (2 * np.log(2 * n * m(n)) / n)\n",
    "    k2 = (2 / n) * np.log(1 / delta)\n",
    "    k3 = 1 / n\n",
    "    result = k1 ** 0.5 + k2 ** 0.5 + k3\n",
    "    return result\n",
    "\n",
    "#Parrondo and Van den Broek\n",
    "def f3(n):\n",
    "    k1 = 1 / n\n",
    "    k2 = 1 / (n ** 2) + (1 / n) * np.log(6 * m(2 * n) / delta)\n",
    "    k2 = k2 ** 0.5\n",
    "    result = k1 + k2\n",
    "    return result\n",
    "\n",
    "#Devroye\n",
    "def f4(n):\n",
    "    k1 = 1 / (n - 2)\n",
    "    k2 = np.log(4 * m(n ** 2) / delta) / (2 * (n - 2)) + 1 / ((n - 2) ** 2)\n",
    "    k2 = k2 ** 0.5\n",
    "    result = k1 + k2\n",
    "    return result\n",
    "\n",
    "#产生点集\n",
    "x = np.arange(100, 2000)\n",
    "\n",
    "y1 = [f1(i) for i in x]\n",
    "y2 = [f2(i) for i in x]\n",
    "y3 = [f3(i) for i in x]\n",
    "y4 = [f4(i) for i in x]\n",
    "\n",
    "plt.plot(x, y1, label=\"Original VC-bound\")\n",
    "plt.plot(x, y2, label=\"Rademacher Penalty Bound\")\n",
    "plt.plot(x, y3, label=\"Parrondo and Van den Broek\")\n",
    "plt.plot(x, y4, label=\"Devroye\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#比较y3, y4\n",
    "plt.plot(x, y3, label=\"Parrondo and Van den Broek\")\n",
    "plt.plot(x, y4, label=\"Devroye\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Problem 2.23 (Page 74)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import math\n",
    "from scipy import integrate\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus']=False #用来正常显示负号\n",
    "\n",
    "def f(x):\n",
    "    return math.sin(math.pi * x)\n",
    "\n",
    "\n",
    "#### Part 1: y=kx+b\n",
    "#已知(x1,y1),(x2,y2)过直线y=kx+b，此函数返回k,b\n",
    "def treat(x1,x2):\n",
    "    y1 = f(x1)\n",
    "    y2 = f(x2)\n",
    "    k = (y2 - y1) / (x2 - x1)\n",
    "    b = (y1 * x2 - y2 * x1) / (x2 - x1)\n",
    "    return k, b\n",
    "\n",
    "#以0.05为间隔产生-1到1的点集，对每个点，求每个点与其后面一个点连线的直线\n",
    "x = np.arange(-1, 1, 0.05)\n",
    "\n",
    "#求出对应的k,b\n",
    "u = []\n",
    "for i in range(x.size-1):\n",
    "    u.append(treat(x[i], x[i+1]))\n",
    "\n",
    "#求出直线\n",
    "X1 = np.array([-1.0, 1.0])\n",
    "Y1 = []\n",
    "for i in u:\n",
    "    temp = X1 * i[0] + i[1]\n",
    "    Y1.append(temp)\n",
    "\n",
    "#y=sin(pix)\n",
    "X2 = np.arange(-1,1,0.01)\n",
    "Y2 = np.sin(np.pi * X2)\n",
    "\n",
    "for i in Y1:\n",
    "    plt.plot(X1, i)\n",
    "plt.scatter(X2, Y2, c='BLACK')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1.8829992352626945, 1.409809326862331e-10)\n"
     ]
    }
   ],
   "source": [
    "#定义误差函数\n",
    "def s1(x, x1, x2):\n",
    "    #此处用numpy计算会产生错误，暂时没找到原因\n",
    "    y1 = f(x1)\n",
    "    y2 = f(x2)\n",
    "    #为了防止分母为0\n",
    "    try:\n",
    "        k = (y2 - y1) / (x2 - x1)\n",
    "        b = (y1 * x2 - y2 * x1) / (x2 - x1)\n",
    "    except:\n",
    "        k = (y2 - y1) / (x2 - x1 + 10 ** (-10))\n",
    "        b = (y1 * x2 - y2 * x1) / (x2 - x1 + 10 ** (-10))\n",
    "    y = f(x)\n",
    "    y0 = k * x + b\n",
    "    return 1 / 8 * (y - y0) ** 2\n",
    "\n",
    "print(integrate.tplquad(s1, -1, 1, lambda x: -1, lambda x: 1,lambda x, y: -1, lambda x, y: 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.8173573934459272, 0.0022386565162670264)\n",
      "(0.7705758041200941, -0.003887001119915329)\n",
      "(0.7950519919327702, -0.0021063482625740025)\n",
      "(0.7612172282002277, -0.00028998733978659075)\n",
      "(0.7650953046679252, -0.0017554686463119747)\n",
      "(0.7725968978737041, 0.005467835334268712)\n",
      "(0.7843637013505946, 0.00298602328006142)\n",
      "(0.7731765274931705, 0.0024678381868252983)\n",
      "(0.7730108488326077, -0.0031621909152766687)\n",
      "(0.7683958880167916, -0.0027188153497075883)\n"
     ]
    }
   ],
   "source": [
    "#计算bias\n",
    "#模拟求出系数\n",
    "def simulation(n):\n",
    "    k = 0\n",
    "    b = 0\n",
    "    #模拟n次\n",
    "    for i in range(n):\n",
    "        #产生-1,1之间均匀分布随机数\n",
    "        x1 = np.random.uniform(-1, 1)\n",
    "        x2 = np.random.uniform(-1, 1)\n",
    "        k1, b1 = treat(x1, x2)\n",
    "        k += k1\n",
    "        b += b1\n",
    "    return k / n, b / n\n",
    "\n",
    "#比较下10000次以上的结果\n",
    "n = range(10 ** 4, 10 ** 5+1, 10 ** 4)\n",
    "result =[]\n",
    "for i in n:\n",
    "    temp = simulation(i)\n",
    "    print(temp)\n",
    "    result.append(temp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.2023501700313988, 5.600953351794085e-10)\n"
     ]
    }
   ],
   "source": [
    "#取第一组计算bias\n",
    "a1, b1 = result[0]\n",
    "\n",
    "def bias(x):\n",
    "    y1 = a1 * x + b1\n",
    "    y2 = f(x)\n",
    "    return (y1 - y2) ** 2 / 2\n",
    "\n",
    "print(integrate.quad(bias,-1,1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1.6768595057474496, 2.311856544782576e-12)\n"
     ]
    }
   ],
   "source": [
    "#计算var\n",
    "def var(x, x1, x2):\n",
    "    y1 = f(x1)\n",
    "    y2 = f(x2)\n",
    "    try:\n",
    "        k = (y2 - y1) / (x2 - x1)\n",
    "        b = (y1 * x2 - y2 * x1) / (x2 - x1)\n",
    "    except:\n",
    "        k = (y2 - y1) / (x2 - x1 + 10 ** (-10))\n",
    "        b = (y1 * x2 - y2 * x1) / (x2 - x1 + 10 ** (-10))\n",
    "    #之前计算的平均系数\n",
    "    yavg= a1 * x + b1\n",
    "    #真实值\n",
    "    yrea = k * x + b\n",
    "    return 1 / 8 * (yavg - yrea) ** 2\n",
    "\n",
    "print(integrate.tplquad(var, -1, 1, lambda x: -1, lambda x: 1,lambda x, y: -1, lambda x, y: 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.507219461635839, 1.3595152276862434e-08)\n"
     ]
    }
   ],
   "source": [
    "#### Part 2: y=kx\n",
    "#定义误差函数\n",
    "def s1_b(x, x1, x2):\n",
    "    y1 = f(x1)\n",
    "    y2 = f(x2)\n",
    "    #为了防止分母为0\n",
    "    try:\n",
    "        a = (x1 * y1 + x2 * y2) / (x1 ** 2 + x2 ** 2)\n",
    "    except:\n",
    "        a = (x1 * y1 + x2 * y2) / (x1 ** 2 + x2 ** 2 + 10 ** (-6))\n",
    "    y = f(x)\n",
    "    y0 = a*x\n",
    "    return 1 / 8 * (y - y0) ** 2\n",
    "\n",
    "print(integrate.tplquad(s1_b, -1, 1, lambda x: -1, lambda x: 1,lambda x, y: -1, lambda x, y: 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.4276259488473502\n",
      "1.4321939362343843\n",
      "1.4345987155625277\n",
      "1.430510626045963\n",
      "1.4271902305037465\n",
      "1.4329941201258598\n",
      "1.4261520694393208\n",
      "1.4243499092826157\n",
      "1.4257831550130027\n",
      "1.4321469294493572\n"
     ]
    }
   ],
   "source": [
    "#bias\n",
    "#模拟求出系数\n",
    "def simulation_b(n):\n",
    "    a = 0\n",
    "    #模拟n次\n",
    "    for i in range(n):\n",
    "        #产生-1,1之间均匀分布随机数\n",
    "        x1 = np.random.uniform(-1, 1)\n",
    "        x2 = np.random.uniform(-1, 1)\n",
    "        y1 = f(x1)\n",
    "        y2 = f(x2)\n",
    "        a1 = (x1 * y1 + x2 * y2) / (x1 ** 2 + x2 ** 2)\n",
    "        a += a1\n",
    "    return a / n\n",
    "\n",
    "#比较下10000次以上的结果\n",
    "n = range(10 ** 4, 10 ** 5+1, 10 ** 4)\n",
    "result =[]\n",
    "for i in n:\n",
    "    temp = simulation_b(i)\n",
    "    print(temp)\n",
    "    result.append(temp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.27051704335951327, 3.806731128263678e-10)\n"
     ]
    }
   ],
   "source": [
    "#取第一组计算bias\n",
    "a1 = result[0]\n",
    "#bias\n",
    "def bias_b(x):\n",
    "    y1 = a1 * x\n",
    "    y2 = f(x)\n",
    "    return (y1 - y2) ** 2 / 2\n",
    "\n",
    "print(integrate.quad(bias_b, -1, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.23657597958139748, 1.4870389231707782e-08)\n"
     ]
    }
   ],
   "source": [
    "#var\n",
    "def var_b(x, x1, x2):\n",
    "    y1 = f(x1)\n",
    "    y2 = f(x2)\n",
    "    try:\n",
    "        a = (x1 * y1 + x2 * y2) / (x1 ** 2 + x2 ** 2)\n",
    "    except:\n",
    "        a = (x1 * y1 + x2 * y2) / (x1 ** 2 + x2 ** 2 + 10 ** (-6))\n",
    "    yavg = a1 * x\n",
    "    yrea = a * x\n",
    "    return 1 / 8 * (yavg - yrea) ** 2\n",
    "\n",
    "print(integrate.tplquad(var_b, -1, 1, lambda x: -1, lambda x: 1,lambda x, y: -1, lambda x, y: 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(c)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.75, 9.174802559227526e-11)\n"
     ]
    }
   ],
   "source": [
    "#### Part 3: y=b\n",
    "#定义误差函数\n",
    "def s1_c(x, x1, x2):\n",
    "    y1 = f(x1)\n",
    "    y2 = f(x2)\n",
    "    b = (y1 + y2) / 2\n",
    "    y = f(x)\n",
    "    y1 = b\n",
    "    return 1 / 8 * (y - y1) ** 2\n",
    "print(integrate.tplquad(s1_c, -1, 1, lambda x: -1, lambda x: 1,lambda x, y: -1, lambda x, y: 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0032387132308861425\n",
      "0.0007637750639711535\n",
      "0.001709963763838227\n",
      "0.0007318085005171177\n",
      "0.0019178728746197919\n",
      "0.0021059556687830203\n",
      "-0.002393825715562925\n",
      "-0.0010197448325790135\n",
      "-0.002155286740170465\n",
      "-0.0002856497992725231\n"
     ]
    }
   ],
   "source": [
    "#bias\n",
    "#模拟求出系数\n",
    "def simulation_c(n):\n",
    "    b = 0\n",
    "    #模拟n次\n",
    "    for i in range(n):\n",
    "        #产生-1,1之间均匀分布随机数\n",
    "        x1 = np.random.uniform(-1, 1)\n",
    "        x2 = np.random.uniform(-1, 1)\n",
    "        y1 = f(x1)\n",
    "        y2 = f(x2)\n",
    "        b1 = (y1 + y2) / 2\n",
    "        b += b1\n",
    "    return(b / n)\n",
    "\n",
    "#比较下10000次以上的结果\n",
    "n = range(10 ** 4, 10 ** 5+1, 10 ** 4)\n",
    "result =[]\n",
    "for i in n:\n",
    "    temp = simulation_c(i)\n",
    "    print(temp)\n",
    "    result.append(temp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.500010489263392, 3.669920676267717e-10)\n"
     ]
    }
   ],
   "source": [
    "#取第一组计算bias\n",
    "b1 = result[0]\n",
    "def bias_c(x):\n",
    "    y1 = b1\n",
    "    y2 = f(x)\n",
    "    return (y1 - y2) ** 2 / 2\n",
    "\n",
    "print(integrate.quad(bias_c, -1, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.25001048926339187, 8.887204421411819e-11)\n"
     ]
    }
   ],
   "source": [
    "#var\n",
    "def var_c(x, x1, x2):\n",
    "    y1 = f(x1)\n",
    "    y2 = f(x2)\n",
    "    b = (y1 + y2)/2\n",
    "    yavg = b1\n",
    "    yrea = b \n",
    "    return 1 / 8 * (yavg - yrea) ** 2\n",
    "\n",
    "print(integrate.tplquad(var_c, -1, 1, lambda x: -1, lambda x: 1,lambda x, y: -1, lambda x, y: 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Problem 2.24 (Page 75)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(-0.007259431812949206, -0.006505637449944645)\n",
      "(0.01054551337977565, 0.0007205658774392578)\n",
      "(0.002200261748429362, 0.00039501424061546197)\n",
      "(-0.0036746772681782273, 3.6611066267928454e-05)\n",
      "(0.0005707483200652478, 0.0012540525909730687)\n",
      "(-0.0035353924654228748, -0.0027067893024173384)\n",
      "(0.002037735570941735, 0.0008453013796700488)\n",
      "(0.0003824037342788735, -0.0006510451808963282)\n",
      "(-0.002044260427503321, 0.0010197292343565425)\n",
      "(-0.002699490891714745, 0.0017938900684602123)\n"
     ]
    }
   ],
   "source": [
    "# -*- coding: utf-8 -*-\n",
    "\"\"\"\n",
    "Created on Tue Feb 19 17:23:17 2019\n",
    "\n",
    "@author: qinzhen\n",
    "\"\"\"\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy import integrate\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus']=False #用来正常显示负号\n",
    "\n",
    "def f(x):\n",
    "    return x ** 2\n",
    "\n",
    "#模拟求出系数\n",
    "def simulation(n):\n",
    "    a = 0\n",
    "    b = 0\n",
    "    #模拟n次\n",
    "    for i in range(n):\n",
    "        #产生-1,1之间均匀分布随机数\n",
    "        x1 = np.random.uniform(-1, 1)\n",
    "        x2 = np.random.uniform(-1, 1)\n",
    "        a1 = (x1 + x2)\n",
    "        b1 = - x1 * x2\n",
    "        a += a1\n",
    "        b += b1\n",
    "    return a / n, b / n\n",
    "\n",
    "#比较下10000次以上的结果\n",
    "n = range(10 ** 4, 10 ** 5+1, 10 ** 4)\n",
    "result =[]\n",
    "for i in n:\n",
    "    temp = simulation(i)\n",
    "    print(temp)\n",
    "    result.append(temp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#选择第一组数据并作图\n",
    "a, b = result[0]\n",
    "x1 = np.arange(-1, 1.1, 0.1)\n",
    "y1 = [f(i) for i in x1]\n",
    "x2 = np.array([-1, 1])\n",
    "y2 = a * x2 + b\n",
    "\n",
    "plt.plot(x1,y1)\n",
    "plt.plot(x2,y2)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.5333333333333333, 8.785771717918444e-15)\n"
     ]
    }
   ],
   "source": [
    "#计算积分\n",
    "#定义误差函数\n",
    "def s1(x, x1, x2):\n",
    "    a = (x1 + x2)\n",
    "    b = - x1 * x2\n",
    "    y = f(x)\n",
    "    y1 = a * x + b\n",
    "    return 1 / 8 * (y - y1) ** 2\n",
    "\n",
    "print(integrate.tplquad(s1, -1, 1, lambda x: -1, lambda x: 1,lambda x, y: -1, lambda x, y: 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.2043969814020088, 2.2692623491639006e-15)\n"
     ]
    }
   ],
   "source": [
    "#bias\n",
    "def bias(x):\n",
    "    y1 = a * x + b\n",
    "    y2 = f(x)\n",
    "    return (y1 - y2) ** 2 / 2\n",
    "\n",
    "print(integrate.quad(bias, -1, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.3333932231020458, 6.3874396220908005e-15)\n"
     ]
    }
   ],
   "source": [
    "#var\n",
    "def var(x, x1, x2):\n",
    "    yavg = a * x + b\n",
    "    a1 = (x1 + x2)\n",
    "    b1 = -x1 * x2\n",
    "    yrea = a1 * x + b1\n",
    "    return 1 / 8 * (yavg - yrea) ** 2\n",
    "\n",
    "print(integrate.tplquad(var, -1, 1, lambda x: -1, lambda x: 1,lambda x, y: -1, lambda x, y: 1))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
